home *** CD-ROM | disk | FTP | other *** search
/ FM Towns: Free Software Collection 11 / FM Towns Free Software Collection 11.iso / t_os / shell / ghel / src / hel.c < prev    next >
C/C++ Source or Header  |  1995-07-26  |  1KB  |  103 lines

  1. /*
  2.     
  3.     GHEL v1.2        [etc.]
  4.     
  5.         Programmed by Keijiro Takahashi (novice)
  6.     
  7. */
  8. #include <stdio.h>
  9. #include <stdlib.h>
  10. #include <string.h>
  11. #include <winb.h>
  12. #include <te.h>
  13. #include <fntb.h>
  14. #include <gui.h>
  15. #include <egb.h>
  16. #include <wgb.h>
  17. #include <guidbg.h>
  18. #include "type.h"
  19. #include "parts.h"
  20.  
  21. extern char *guiEgbPtr;
  22.  
  23.  
  24.  
  25.  
  26. /*
  27.  
  28.     データロード
  29.  
  30. */
  31. int loadhel(char *pathname,hel *helbuf)
  32. {
  33.     FILE *fp;
  34.     size_t size;
  35.     int ret;
  36.  
  37.     if( (fp=fopen(pathname,"rb")) == NULL )
  38.     {
  39.         alert("ファイルのオープンに失敗しました");
  40.         return(1);
  41.     }
  42.     
  43.     fseek(fp,0,SEEK_END);
  44.     size = (size_t)ftell(fp)-0xc;
  45.     helbuf->page_max = size/2400-1;
  46.     
  47.     TL_free(helbuf->buf);
  48.     
  49.     if ( (helbuf->buf=TL_malloc(size)) == NULL )
  50.     {
  51.         alert("バッファの確保に失敗しました");
  52.         fclose(fp);
  53.         return(1);
  54.     }
  55.     
  56.     fseek(fp,0xc,SEEK_SET);
  57.     
  58.     MG_SetPtr(MB_WAIT);
  59.     ret=fread(helbuf->buf,1,size,fp);
  60.     MG_SetPtr(MB_SELECT);
  61.     
  62.     fclose(fp);
  63.     
  64.     if(ret!=size)
  65.     {
  66.         alert("データのロードに失敗しました");
  67.         TL_free(helbuf->buf);
  68.         fclose(fp);
  69.         return(1);
  70.     }
  71.     
  72.     helbuf->page=0;
  73.     return(0);
  74. }
  75.  
  76.  
  77.  
  78.  
  79.  
  80. /*
  81.  
  82.     へらへら → 2bit/pixel
  83.  
  84. */
  85. void helcnv(hel *buf)
  86. {
  87.     int page,offset;
  88.     
  89.     MG_SetPtr(MB_WAIT);
  90.     
  91.     for(page=0 ; page<buf->page_max ; page++)
  92.     {
  93.         for(offset=0 ; offset<2400 ; offset++)
  94.         {
  95.             buf->buf[(page+1)*2400+offset] ^= buf->buf[page*2400+offset];
  96.         }
  97.     }
  98.     
  99.     MG_SetPtr(MB_SELECT);
  100.     
  101.     return;
  102. }
  103.